Why is -[UISwitch superlayer] being called?

Posted by Jonathan Sterling on Stack Overflow See other posts from Stack Overflow or by Jonathan Sterling
Published on 2010-03-25T23:12:43Z Indexed on 2010/03/26 3:03 UTC
Read the original article Hit count: 608

I've got sort of a crazy thing going on where I have an NSProxy subclass standing in for a UISwitch. Messages sent to the proxy are forwarded to the switch. Please don't comment on whether or not this is a good design, because in context, it makes sense as an incredibly cool thing.

The dealio is that when I try to add this object as an accessory view to a UITableViewCell, I get the following crash:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UISwitch superlayer]: unrecognized selector sent to instance 0x5889740'

Yes, I could just set the proxy's target as the accessory view, but then I would have to keep track of the proxy so that I could release it at the right time. So, what I really want is to be able to have the proxy retained by the table cell, and released when it is removed from the view just like a normal accessory view.

So, why is -[UISwitch superlayer] (a method which does not exist) being called, and how do I save the world?

© Stack Overflow or respective owner

Related posts about objective-c

Related posts about proxy